package weixinuser_service

import (
	"shop/internal/models"
	"shop/internal/models/vo"
	"shop/pkg/global"
)

type User struct {
	Id         int64  `json:"id"`
	UserName   string `json:"username"`
	OpenID     string `json:"open_id"` // 修正为 OpenID，对应 JSON 字段open_id
	SessionKey string `json:"session_key"`
	M          *models.ShopUser
}

// 查询用户信息
func (d *User) GetOneUser() vo.ResultList {
	info, err := models.GetOneUserInfo(d.OpenID)
	if err != nil {
		global.LOG.Error(err)
		return vo.ResultList{Content: nil, TotalElements: 0}
	}
	return vo.ResultList{Content: info, TotalElements: 1}
}

// 创建用户
func (d *User) AddWeixinUser() error {
	return models.WxAddUser(d.M)
}

// 更新用户信息
func (d *User) UpdateWeixinUser() error {
	return models.WxUpdateUser(d.M)
}

// 查询用户信息 通过userId
func (d *User) GetUserInfo() vo.ResultList {
	info, err := models.GetUserIdInfo(d.Id)
	if err != nil {
		global.LOG.Error(err)
		return vo.ResultList{Content: nil, TotalElements: 0}
	}
	return vo.ResultList{Content: info, TotalElements: 1}
}

func (d *User) UpdateUserInfo() error {
	//info, err := models.UpdateDateUser(d.Id)
	return models.UpdateDateUser(d.M)
}

// UpdateSessionKey 更新用户的session_key
func (e *User) UpdateSessionKey(sessionKey string) error {
	// 这里根据您的数据库操作方式来实现
	// 示例使用 GORM：
	result := global.Db.Model(&models.ShopUser{}).
		Where("open_id = ?", e.OpenID).
		Update("session_key", sessionKey)

	if result.Error != nil {
		return result.Error
	}

	return nil
}
